home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / bits / resource.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  7KB  |  235 lines

  1. /* Bit values & structures for resource limits.  Linux version.
  2.    Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005, 2008, 2009
  3.    Free Software Foundation, Inc.
  4.    This file is part of the GNU C Library.
  5.  
  6.    The GNU C Library is free software; you can redistribute it and/or
  7.    modify it under the terms of the GNU Lesser General Public
  8.    License as published by the Free Software Foundation; either
  9.    version 2.1 of the License, or (at your option) any later version.
  10.  
  11.    The GNU C Library is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.    Lesser General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU Lesser General Public
  17.    License along with the GNU C Library; if not, write to the Free
  18.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  19.    02111-1307 USA.  */
  20.  
  21. #ifndef _SYS_RESOURCE_H
  22. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  23. #endif
  24.  
  25. #include <bits/types.h>
  26.  
  27. /* Transmute defines to enumerations.  The macro re-definitions are
  28.    necessary because some programs want to test for operating system
  29.    features with #ifdef RUSAGE_SELF.  In ISO C the reflexive
  30.    definition is a no-op.  */
  31.  
  32. /* Kinds of resource limit.  */
  33. enum __rlimit_resource
  34. {
  35.   /* Per-process CPU limit, in seconds.  */
  36.   RLIMIT_CPU = 0,
  37. #define RLIMIT_CPU RLIMIT_CPU
  38.  
  39.   /* Largest file that can be created, in bytes.  */
  40.   RLIMIT_FSIZE = 1,
  41. #define    RLIMIT_FSIZE RLIMIT_FSIZE
  42.  
  43.   /* Maximum size of data segment, in bytes.  */
  44.   RLIMIT_DATA = 2,
  45. #define    RLIMIT_DATA RLIMIT_DATA
  46.  
  47.   /* Maximum size of stack segment, in bytes.  */
  48.   RLIMIT_STACK = 3,
  49. #define    RLIMIT_STACK RLIMIT_STACK
  50.  
  51.   /* Largest core file that can be created, in bytes.  */
  52.   RLIMIT_CORE = 4,
  53. #define    RLIMIT_CORE RLIMIT_CORE
  54.  
  55.   /* Largest resident set size, in bytes.
  56.      This affects swapping; processes that are exceeding their
  57.      resident set size will be more likely to have physical memory
  58.      taken from them.  */
  59.   __RLIMIT_RSS = 5,
  60. #define    RLIMIT_RSS __RLIMIT_RSS
  61.  
  62.   /* Number of open files.  */
  63.   RLIMIT_NOFILE = 7,
  64.   __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */
  65. #define RLIMIT_NOFILE RLIMIT_NOFILE
  66. #define RLIMIT_OFILE __RLIMIT_OFILE
  67.  
  68.   /* Address space limit.  */
  69.   RLIMIT_AS = 9,
  70. #define RLIMIT_AS RLIMIT_AS
  71.  
  72.   /* Number of processes.  */
  73.   __RLIMIT_NPROC = 6,
  74. #define RLIMIT_NPROC __RLIMIT_NPROC
  75.  
  76.   /* Locked-in-memory address space.  */
  77.   __RLIMIT_MEMLOCK = 8,
  78. #define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK
  79.  
  80.   /* Maximum number of file locks.  */
  81.   __RLIMIT_LOCKS = 10,
  82. #define RLIMIT_LOCKS __RLIMIT_LOCKS
  83.  
  84.   /* Maximum number of pending signals.  */
  85.   __RLIMIT_SIGPENDING = 11,
  86. #define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING
  87.  
  88.   /* Maximum bytes in POSIX message queues.  */
  89.   __RLIMIT_MSGQUEUE = 12,
  90. #define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE
  91.  
  92.   /* Maximum nice priority allowed to raise to.
  93.      Nice levels 19 .. -20 correspond to 0 .. 39
  94.      values of this resource limit.  */
  95.   __RLIMIT_NICE = 13,
  96. #define RLIMIT_NICE __RLIMIT_NICE
  97.  
  98.   /* Maximum realtime priority allowed for non-priviledged
  99.      processes.  */
  100.   __RLIMIT_RTPRIO = 14,
  101. #define RLIMIT_RTPRIO __RLIMIT_RTPRIO
  102.  
  103.   __RLIMIT_NLIMITS = 15,
  104.   __RLIM_NLIMITS = __RLIMIT_NLIMITS
  105. #define RLIMIT_NLIMITS __RLIMIT_NLIMITS
  106. #define RLIM_NLIMITS __RLIM_NLIMITS
  107. };
  108.  
  109. /* Value to indicate that there is no limit.  */
  110. #ifndef __USE_FILE_OFFSET64
  111. # define RLIM_INFINITY ((unsigned long int)(~0UL))
  112. #else
  113. # define RLIM_INFINITY 0xffffffffffffffffuLL
  114. #endif
  115.  
  116. #ifdef __USE_LARGEFILE64
  117. # define RLIM64_INFINITY 0xffffffffffffffffuLL
  118. #endif
  119.  
  120. /* We can represent all limits.  */
  121. #define RLIM_SAVED_MAX    RLIM_INFINITY
  122. #define RLIM_SAVED_CUR    RLIM_INFINITY
  123.  
  124.  
  125. /* Type for resource quantity measurement.  */
  126. #ifndef __USE_FILE_OFFSET64
  127. typedef __rlim_t rlim_t;
  128. #else
  129. typedef __rlim64_t rlim_t;
  130. #endif
  131. #ifdef __USE_LARGEFILE64
  132. typedef __rlim64_t rlim64_t;
  133. #endif
  134.  
  135. struct rlimit
  136.   {
  137.     /* The current (soft) limit.  */
  138.     rlim_t rlim_cur;
  139.     /* The hard limit.  */
  140.     rlim_t rlim_max;
  141.   };
  142.  
  143. #ifdef __USE_LARGEFILE64
  144. struct rlimit64
  145.   {
  146.     /* The current (soft) limit.  */
  147.     rlim64_t rlim_cur;
  148.     /* The hard limit.  */
  149.     rlim64_t rlim_max;
  150.  };
  151. #endif
  152.  
  153. /* Whose usage statistics do you want?  */
  154. enum __rusage_who
  155. {
  156.   /* The calling process.  */
  157.   RUSAGE_SELF = 0,
  158. #define RUSAGE_SELF RUSAGE_SELF
  159.  
  160.   /* All of its terminated child processes.  */
  161.   RUSAGE_CHILDREN = -1
  162. #define RUSAGE_CHILDREN RUSAGE_CHILDREN
  163.  
  164. #ifdef __USE_GNU
  165.   ,
  166.   /* The calling thread.  */
  167.   RUSAGE_THREAD = 1
  168. # define RUSAGE_THREAD RUSAGE_THREAD
  169.   /* Name for the same functionality on Solaris.  */
  170. # define RUSAGE_LWP RUSAGE_THREAD
  171. #endif
  172. };
  173.  
  174. #define __need_timeval
  175. #include <bits/time.h>        /* For `struct timeval'.  */
  176.  
  177. /* Structure which says how much of each resource has been used.  */
  178. struct rusage
  179.   {
  180.     /* Total amount of user time used.  */
  181.     struct timeval ru_utime;
  182.     /* Total amount of system time used.  */
  183.     struct timeval ru_stime;
  184.     /* Maximum resident set size (in kilobytes).  */
  185.     long int ru_maxrss;
  186.     /* Amount of sharing of text segment memory
  187.        with other processes (kilobyte-seconds).  */
  188.     long int ru_ixrss;
  189.     /* Amount of data segment memory used (kilobyte-seconds).  */
  190.     long int ru_idrss;
  191.     /* Amount of stack memory used (kilobyte-seconds).  */
  192.     long int ru_isrss;
  193.     /* Number of soft page faults (i.e. those serviced by reclaiming
  194.        a page from the list of pages awaiting reallocation.  */
  195.     long int ru_minflt;
  196.     /* Number of hard page faults (i.e. those that required I/O).  */
  197.     long int ru_majflt;
  198.     /* Number of times a process was swapped out of physical memory.  */
  199.     long int ru_nswap;
  200.     /* Number of input operations via the file system.  Note: This
  201.        and `ru_oublock' do not include operations with the cache.  */
  202.     long int ru_inblock;
  203.     /* Number of output operations via the file system.  */
  204.     long int ru_oublock;
  205.     /* Number of IPC messages sent.  */
  206.     long int ru_msgsnd;
  207.     /* Number of IPC messages received.  */
  208.     long int ru_msgrcv;
  209.     /* Number of signals delivered.  */
  210.     long int ru_nsignals;
  211.     /* Number of voluntary context switches, i.e. because the process
  212.        gave up the process before it had to (usually to wait for some
  213.        resource to be available).  */
  214.     long int ru_nvcsw;
  215.     /* Number of involuntary context switches, i.e. a higher priority process
  216.        became runnable or the current process used up its time slice.  */
  217.     long int ru_nivcsw;
  218.   };
  219.  
  220. /* Priority limits.  */
  221. #define PRIO_MIN    -20    /* Minimum priority a process can have.  */
  222. #define PRIO_MAX    20    /* Maximum priority a process can have.  */
  223.  
  224. /* The type of the WHICH argument to `getpriority' and `setpriority',
  225.    indicating what flavor of entity the WHO argument specifies.  */
  226. enum __priority_which
  227. {
  228.   PRIO_PROCESS = 0,        /* WHO is a process ID.  */
  229. #define PRIO_PROCESS PRIO_PROCESS
  230.   PRIO_PGRP = 1,        /* WHO is a process group ID.  */
  231. #define PRIO_PGRP PRIO_PGRP
  232.   PRIO_USER = 2            /* WHO is a user ID.  */
  233. #define PRIO_USER PRIO_USER
  234. };
  235.